package com.xiaoshuidi.cloud.module.contract.controller.admin.contract.vo.stay;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.xiaoshuidi.cloud.module.contract.util.date.DateUtils;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.ToString;
import org.springframework.format.annotation.DateTimeFormat;

import java.math.BigDecimal;
import java.time.LocalDate;
import java.util.List;

import static com.xiaoshuidi.cloud.framework.common.util.date.DateUtils.TIME_ZONE_DEFAULT;

@Schema(description = "管理后台 - 合同抄表计费数据创建 Request VO")
@Data
@ToString(callSuper = true)
public class ContractMeterfeesCreateReqVO {
    /**
     * 关联业主合同
     */
    private Long houseContractId;
    /**
     * 关联租客合同
     */
    private Long roomContractId;
    /**
     * 计费方式 bymeter 抄表计费 | prepayment 预付费（智能表）| postpayment 后付费（智能表）
     */
    private String meterSort;
    /**
     * 设备类型
     */
    private String meterType;
    /**
     * 费用类型
     */
    private Integer feeType;
    /**
     * 单价
     */
    private BigDecimal unitPrice;
    /**
     * 读数
     */
    private BigDecimal meterCurrent;
    /**
     * 抄表日期
     */
    @DateTimeFormat(pattern = DateUtils.FORMAT_DATE)
    @JsonFormat(pattern = DateUtils.FORMAT_DATE, timezone = TIME_ZONE_DEFAULT)
    private LocalDate meterTime;
    /**
     * 设备编码
     */
    private String meterDevice;
    /**
     * 最后读数
     */
    private BigDecimal lastMeterCurrent;
    /**
     * 最后抄表日期
     */
    @DateTimeFormat(pattern = DateUtils.FORMAT_DATE)
    @JsonFormat(pattern = DateUtils.FORMAT_DATE, timezone = TIME_ZONE_DEFAULT)
    private LocalDate lastMeterTime;
    /**
     * 账单金额
     */
    private BigDecimal billAmount;
    /**
     * 初始读数
     */
    private BigDecimal firstReading;
    /**
     * 版本号
     */
    private Integer version;
    /**
     * 备注
     */
    private String remark;
    /**
     * 费项ID
     */
    private Long feeId;
    /**
     * 费项名称
     */
    private String feeName;
    /**
     * 附件
     */
    private List<String> annexFile;
}
